#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
#define ll long long
#define scl(n) scanf("%lld", &n)
#define scc(c) scanf(" %c", &c);
#define fr(i,n) for (ll i=0;i<n;i++)
#define fr1(i,n) for(ll i=1;i<=n;i++)
#define pfl(x) printf("%lld\n",x)
#define pb push_back
#define l(s) s.size()
#define asort(a) sort(a,a+n)
#define all(x) (x).begin(), (x).end()
#define dsort(a) sort(a,a+n,greater<int>())
#define vasort(v) sort(v.begin(), v.end());
#define vdsort(v) sort(v.begin(), v.end(),greater<int>());
#define uniquee(x) x.erase(unique(x.begin(), x.end()),x.end())
#define pn printf("\n")
#define md 10000007
#define inf 1<<28
#define debug printf("I am here\n")
#define ps printf(" ")
#define Pi acos(-1.0)
#define mem(a,i) memset(a, i, sizeof(a))
#define tcas(i,t) for(ll i=1;i<=t;i++)
#define N 100006
vector<ll>v[N];
bool vis[N];
ll cnt=1;
ll dfs(ll n)
{
vis[n]=1;
for(auto it: v[n])if(!vis[it])cnt++,dfs(it);
return cnt;
}
int main()
{
ll m,n,t,b,c,d,i,j,k,x,y,z,l,q,r;
cin>>n>>m;
fr(i,m)
{
cin>>x>>y;
v[x].pb(y), v[y].pb(x);
}
dfs(1);
if(n==m and n==cnt)cout<<"FHTAGN!"<<endl;
else cout<<"NO"<<endl;
return 0;
}
505B - Mr Kitayuta's Colorful Graph | 1324D - Pair of Topics |
157B - Trace | 34C - Page Numbers |
279A - Point on Spiral | 1294D - MEX maximizing |
447A - DZY Loves Hash | 23B - Party |
63D - Dividing Island | 1203E - Boxers |
1547F - Array Stabilization (GCD version) | 358A - Dima and Continuous Line |
1385C - Make It Good | 651A - Joysticks |
1474D - Cleaning | 1588A - Two Arrays |
816A - Karen and Morning | 9D - How many trees |
918B - Radio Station | 15A - Cottage Village |
1737B - Ela's Fitness and the Luxury Number | 1425H - Huge Boxes of Animal Toys |
1737A - Ela Sorting Books | 768C - Jon Snow and his Favourite Number |
1006C - Three Parts of the Array | 81A - Plug-in |
276C - Little Girl and Maximum Sum | 1738D - Permutation Addicts |
1348B - Phoenix and Beauty | 186A - Comparing Strings |